package builder.construction;

import builder.database.Column;

/**
 * 
 * @author Alex
 *
 */
public interface SelectBuilder {
	/**
	 * <br/>
	 * <ul><li><strong>select</strong></li></ul>
	 * <br/>
	 * This method enumerates the columns that need to be fetched from the database
	 * <br/>
	 * @param columns list of columns to fetch
	 * @return 
	 */
	public FromBuilder select(Column... columns);
	
	/**
	 * <br/>
	 * <ul><li><strong>selectDistinct</strong></li></ul>
	 * <br/>
	 * This method enumerates the columns that need to be fetched from the database
	 * while filtering out non-unique values
	 * <br/>
	 * @param columns list of columns to fetch
	 * @return 
	 */
	public FromBuilder selectDistinct(Column... columns);
	
	/**
	 * <br/>
	 * <ul><li><strong>selectAll</strong></li></ul>
	 * <br/>
	 * This method will tell the query to select every column from the specified tables
	 * <br/>
	 * @return 
	 */
	public FromBuilder selectAll();
}
